// OtsuBinarize.h
// 创建人：仲思惠
//
// 最佳二值化自动生成（OtsuBinarize.cu）
// 根据两个领域之间的分散程度，自动找到最佳二值化结果
//
// 修订历史：
// 2012年11月25日（仲思惠）
//     初始版本。
// 2012年11月28日（王媛媛、仲思惠)
//     实现了 OTSU 算法，自动找到图像的最佳阈值，并实现图像的最佳二值化。
// 2012年12月03日（仲思惠）
//     添加了另一种实现方法，并对比 OpenCV 的运行结果对两种方法进行了整合。
// 2012年12月06日（仲思惠）
//     修正了代码格式，并添加适当的注释。
// 2012年12月13日（于玉龙、仲思惠）
//     修改了部分变量的类型，并修正了代码中的格式错误。
// 2012年12月19日（仲思惠）
//     修改了计算最佳阈值的方法。
// 2012年12月20日（于玉龙、仲思惠）
//     删除了一处测试代码，修正了代码格式。

#ifndef __OTSUBINARIZE_H__
#define __OTSUBINARIZE_H__

#include "Image.h"
#include "Histogram.h"

// 类：OtsuBinarize
// 继承自：无
// 根据两个领域之间的分散程度，自动找到最佳二值化结果
class OtsuBinarize {

public:

    // 构造函数：OtsuBinarize
    // 无参数版本的构造函数，所有的成员变量皆初始化为默认值。
    // 该函数没有任何内容。
    __host__ __device__
    OtsuBinarize(){
        // 该函数不进行任何操作
    }

    // Host 成员方法：otsuBinarize（最佳二值化自动生成）
    // 根据两个领域之间的分散程度,自动找到最佳二值化结果。
    __host__ int                // 返回值：函数是否正确执行，若函数正
                                // 确执行，返回 NO_ERROR。
    otsuBinarize(
            Image *inimg,       // 输入图像
            Image *outimg       // 输出图像
    );
};

#endif

